<HTML>
<BODY>
<TITLE>Assignment 1</TITLE>

<BR>
<H1>
Assignment 1: View Frustums </H1>
<BR CLEAR = ALL>
<HR>
<font face="Verdana" >
<P>

The purpose of this assignment is make you comfortable with the types
of projections and view frustums necessary for immersive displays, in
particular:
<P>
<ul>
<li> head-tracked viewing of standard displays,
<li> stereo display in head-mounted displays,
<li> viewing in CAVE-like evironments.
</ul>
<p>
All of these displays require something non-standard in the displays,
either asymmetric view frustums or multiple viewports.
<P>
For this assignment, you will create an application to allow
interactive exploration of view frustums. I highly recommend using
OpenGL, and although I am a Linux person, I recommend using Windows
Visual Studio both as a learning experience and because that is how
our lab machines will be setup. This assignment will actually be
simple enough that is should cross-compile easily, so you could
probably do Mac development and then test it under windows or
something like that.

The application should have the following:
<ul>

<li> Open a openGL window and draw a scene (a cube or two, a teapot,
whatever). 

<li> Allow switching between glOrtho, gluPerspective, and glFrustum
projection matrices.

<li> Allow interactive specification of the different projection and
gluLookat parameters. Lots of keyboard mapping is fine, but if you
have some clever interface ideas, all the better. This should include
at least the eye point (or direction), the lookat point, the near
plane, and some translational motion of the viewing plane, where allowed.

<li> Finally, prepare for using an HMD by allowing an option which
splits the window into two parts using glviewport and draw a left
eye/right eye scene.

<li> For full credit, you should do something imaginative or
experimental or extra nice. This can be some extra functionality or a
more polished interface, or a small investigation comparing the use of
the different projections.
 </ul>

You will probably find it useful to write or find a small point/vector
package with some basic operations (+,-, dot, cross, scale). 
<P>
You may use and adapt code snippets and code shells from sample code,
but the main work should be your own.
<P>

Please hand in a brief report (1 page, .doc, .pdf, openoffice)
documenting your interface and your results with a few images and
text.

Submit work by 5P.M., Jan. 30 from a CADE machine using

<br>
handin cs6360 Assignment1 yourreport project.[zip,tar]
<br> 

There is a web handin utility - if you use it, do not include spaces
in your filenames. It will not submit and not warn you or me about the
problem. Please submit some junk test file early in the process so you
can see if you have problems.<br> Everyone in the class should have
CADE accounts and thus should be able to use handin.
<br>
<hr>

</font>
</BODY>
</HTML>